<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LibQQt: multi-link</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LibQQt
   &#160;<span id="projectnumber">v3.1</span>
   </div>
   <div id="projectbrief">开源、跨平台Qt应用程序框架中间件</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">multi-link </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Multi Link 技术，这个技术帮助使用者利用qmake这款工程管理工具来进行多个增删link-library。全称Multi-link technology，“多链接”技术，专门解决这些个app链接library出现的手工解决太多困难的问题。</p>
<p>现在的Multi Link和LibQQt绑定在一起，还未分离。在这里介绍现在的样子和将会实现的功能。 <br />
 Multi-link Technology Project Link: <a href="https://gitee.com/drabel/multi-link">https://gitee.com/drabel/multi-link</a></p>
<h1>文件组成和功能介绍</h1>
<ol type="1">
<li>qqt_version.pri 用于更改Library的版本信息。只需要更改这一个地方就可以了</li>
<li>qqt_qkit.pri 用于支持目标平台信息，读取环境变量QKIT设置SYSNAME。</li>
<li>qqt_function.pri 提供丰富的操作函数，分为两类两种，一类获取命令字符串，一类执行命令，一种条件函数，一种求解函数。<ul>
<li>mkdir system_errcode read_ini write_ini empty_file write_line copy_dir user_home user_config_path</li>
<li>相应的get函数</li>
<li>支持windows 和 *nix。</li>
</ul>
</li>
<li>qqt_header.pri 包含qqt的特性开关，在这里决定library的大小和内部函数数目。<ul>
<li>QQT_STATIC_LIBRARY 宏的开关判断也在这里。在linux等posix平台，这种区分动态静态的宏意义不是很大，一般不定义就可以。在windows平台要求很强烈，在QQt中，windows平台，编译静态库，无论编译还是链接，QQT_STATIC_LIBRARY都是需要的。动态库，编译时需要QQT_LIBRARY宏，链接时不需要宏。在qqt.pro和link_qqt.pri当中自动做了适配。</li>
</ul>
</li>
<li>qqt_source.pri 包含所有对应qqt的特性的源文件和头文件，HEADERS+= SOURCES+=全在这里。</li>
<li>qqt_3rdparty.pri 包含所有的第三方源代码。对于GPL，第三方的还是单独拿出来。找问题和开关特性都比较清晰。</li>
<li>qqt_install.pri 这里负责发布QQt SDK，所有的函数都在这里，但是发布工作在qqt_library.pri里，编译QQt时不发生任何发布sdk的问题，只有在app当中pre link的时候才会create sdk，link from sdk。</li>
<li>qqt_library.pri qqt的sdk发布工作，app链接QQt工作，要求用户进行BUILD-SDK-DEPLOY ROOT路径指定也发生在这里。它会自动生成一个pri，给用户指定这三个变量。</li>
<li>qqt_library.pri 包含以上这几个app需要的pri，这个文件现在只能放在library目录里。</li>
<li>app_configure.pri app配置文件，这个一般是公共配置文件，里面包含了link_qqt_library.pri。更改意义不大，将来可能会被生成，而不是开始就存在。</li>
<li>app_deploy.pri app发布文件，app发布到指定位置的工作就在这里实现，这个文件将来也可能被生成而不是开始就存在。</li>
</ol>
<h1>将要实现</h1>
<ul>
<li>qqt_header.pri qqt_source.pri 两个pri将会自动生成lib_header.pri，lib_source.pri，用户实现这两个pri，填充和自己的library有关的头文件和源文件，模块开关等信息。</li>
<li>qqt_library.pri 将会自动生成app_configure.pri用于用户配置</li>
<li>app_deploy.pri 将会更名为qqt_deploy.pri，用来完成支援app发布所需的功能。</li>
<li>qqt_install.pri 将会负责和sdk发布相关的工作。</li>
<li>这些pri将会全部转移到MLMA技术仓库，用户可以独立将其下载、配置，在一个地方完成多个lib和app工程的部署。<ul>
<li>初步规划用户要clone到library目录。</li>
</ul>
</li>
</ul>
<p>相信在Multi Link技术的帮助下，用户开发Library和Application肯定会如虎添翼，节省巨大的工时和精力。（现在仅仅支持LibQQt使用）</p>
<h1>Multi-link技术完成</h1>
<p>千等万等，Multi-link技术终于现出原形了。 <br />
修复了发布QQt SDK无处安置的问题。 <br />
</p><ol type="1">
<li>include(.../multi-link/multi-link/add_base_manager.pri) <br />
 - 这里是多链接技术一切的开始。 <br />
2. 提供函数 （这里只展示一部分）<ul>
<li>add_sdk() (lib工程用) <br />
 - add_version() <br />
 - ﻿add_deploy() <br />
 - ﻿add_deploy_library() <br />
 - ﻿add_deploy_config() <br />
 - ﻿add_include() <br />
 - ﻿add_headers() <br />
 - ﻿add_library() <br />
 - ﻿add_defines() <br />
 - ﻿add_language() <br />
 - ﻿add_zh_CN_en_US() <br />
3. 彻底的脱离了libQQt，但是提供对libQQt的链接支持，和对其他Library的链接支持一模一样。 <br />
4. 有Multi-link帮助，用户可以任意的在app和lib之间设计链接关系了。 <br />
4. QQt提供的强大功能，并没有因为Multi-link的升级而改变，依然强大。 </li>
</ul>
</li>
</ol>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
